/** 
 * 执行校验操作
 * 
 * 目前默认是在输入域失去焦点时进行校验，
 * 
 * 参数：
 * （1）jsonData：校验器配置数据，数据类型（JSON）
 * （2）checkRules：需要执行的校验规则，数据类型（数组）
 * （3）content：输入域输入的内容
 * （4）checkerErrMsg：错误信息
 * （5）组件输入内容最大长度，优先级最高，需要在涉及到长度的校验器中进行处理，如长度校验需要校验的长度必须小于或等于输入域允许输入的最大长度,单独调用时不需要传入
 * 
 * 注意：check方法已抛出，开发人员可以引入后调用。
 * 必输项：
 * （1）jsonData：校验器配置数据，数据类型（JSON）
 * （2）checkRules：需要执行的校验规则，数据类型字符串
 * （3）content：输入域输入的内容
*/
import Checker from './checker';

function check(jsonData, checkRules, content, checkerErrMsg, maxLength) {
    let checkArray =  checkRules.split(',');
    let checker = new Checker();
    for(let i = 0; i < checkArray.length; i++) {
        let checkerID = checkArray[i].split('_')[0]; 
        if(checker[checkerID]){
            let checkResult = checker[checkerID](jsonData[checkerID][checkArray[i]], content, checkerErrMsg, maxLength);
            if(!checkResult.result){
                return checkResult;
            }
        }
    }
    return {"result":true, "message":"检验成功"}; 
}

export default check;